/**
 * 创建函数表达式
 */

import types from '@babel/types'
import genTools from '@babel/generator'

const test4 = () => {
  // 创建表达式
  let t1 = types.variableDeclaration('const',
    [
      types.variableDeclarator(
        types.identifier('a'),
        types.numericLiteral(1)
      )
    ]
  )

  // console.log(t1);
  // const a = 1;
  console.log('生成代码的效果：');
  console.log(genTools.default(t1).code);


  // 创建一个函数声明

  const f1 = types.functionDeclaration(
    // 函数标识符, 函数名字
    types.identifier('gogogo'),
    // 函数参数
    [
      // 形参
      types.identifier('p1')
    ],

    // 函数体， 对应参数就是 body
    types.blockStatement([
      // 代码块就是  const a = 1
      types.variableDeclaration('const',
        [
          types.variableDeclarator(
            types.identifier('a'),
            types.numericLiteral(1)
          )
        ]
      ),

      // 代码  console.log(p1)
      // 表达式声明
      types.expressionStatement(
        // 函数调用
        types.callExpression(
          types.identifier('console.log'),
          // 传递给console.log 函数的参数
          [
            types.identifier('p1')
          ]
        )
      )
    ])
  )

  console.log(genTools.default(f1).code);
}

test4()